import {customRef} from 'vue';
/*
  1. customRef 接收一个工厂函数作为参数，该工厂函数返回一个对象。
  2. 返回的对象，包含以下俩个方法
    - get(): 用于获取ref 的值，并可以控制依赖追踪
    - set(): 用于设置值，并可以控制更新触发的时机
*/

export const myCustomRef = <T>(initialValue: T) => {
  return customRef((track, trigger) => {

    return {
      get() {
        track(); // 收集依赖
        return initialValue
      },
      set(newValue) {
        initialValue = newValue;
        trigger()
      }
    }
  })
}